package si.yun.dao;

import org.apache.ibatis.annotations.Param;
import si.yun.entity.*;

import java.util.List;
import java.util.Map;

/**
 * @program: ThinkManage
 * @description: 个人中心dao层接口
 * @author: 崔晓晨
 * @create: 2021-10-20 14:10
 **/
public interface PersonalDao {
    //查询课程浏览记录
    List<SyPlayRecord> selWatchCourse(@Param("userId") Integer userId);
    //查询课程详细信息
    SyCourse selCourseInfo(@Param("courseId")Integer courseId);
    //查询前台用户详细信息
    SyBeforeUser selBeforeUserInfo(@Param("userId")Integer userId);
    //查看管理人员详细信息
    SyUser selBackUserInfo(@Param("userId")Integer userId);
    //批量删除观看记录
    Integer delWatchCourse(@Param("ids")List<Integer> ids);
    //获取订单信息
    List<Map<String,Object>> selOrderInfo(@Param("userId")Integer userId,@Param("orderStatus")Integer orderStatus,@Param("comment")Integer comment);
    //查看订单课程详细信息
    Map<String,Object> selCourseOrderInfo(@Param("productId")Integer productId);
    //查看订单中商品的详细信息
    Map<String,Object> selProductOrderInfo(@Param("productId")Integer productId);

    //获取指定用户订单
    WeiXinOrder selectByPrimaryKey(Integer id);
    //获取商品的订单信息
    Map<String, Object> getProductOrderInfo(@Param("orderId")Integer orderId, @Param("productId")Integer productId, @Param("orderType")Integer orderType);
    // 获取当先购买用户是否在指定课程下评论
    Integer selUserIdCommentNum(@Param("userId")Integer userId,@Param("productId")Integer productId,@Param("orderType")Integer orderType);
    //更改订单评论状态
    Integer updCpmmentStatus(@Param("comment")Integer comment,@Param("orderId")Integer orderId);
    //更改订单状态
    Integer updRefundStatus(@Param("orderId")Integer orderId,@Param("orderStatus")Integer orderStatus);
    //获取优惠券的列表信息 未使用
    List<Map<String,Object>> selCouponListInfo(@Param("state")Integer state,@Param("userId")Integer UserId);
    //获取优惠券的列表信息 已使用
    List<Map<String,Object>> selCouponUsed(@Param("state")Integer state,@Param("userId")Integer UserId);
    //获取已过期的优惠券信息
    List<Map<String,Object>> selExpiredCouponInfo(@Param("state")Integer state,@Param("userId")Integer UserId);
    //添加播放记录
    Integer addPlayWatch(@Param("userId")Integer userId, @Param("courseId")Integer courseId, @Param("courseName")String courseName);
    //添加用户学习时长
    Integer updStudyMoney(@Param("userId")Integer userId,@Param("studyDate")Integer studyDate);
    //更新播放时间
    Integer updPlayWatch(@Param("userId")Integer userId, @Param("courseId")Integer courseId);
    //查看用户收藏记录
    List<SyUserCollection> selUserCollection(@Param("userId")Integer userId);
    //获取商品的详细信息
    SyProduct selProductInfo(@Param("productId")Integer productId);
    //获取微圈的详细信息
    SyForum selMicroForumInfo(@Param("productId")Integer productId);
    //获取用户购买的课程信息
    List<Map<String,Object>> selBuyCourse(@Param("userId")Integer userId);
    //获取当前用户是否认证过创作者
    Map<String,Object> selApplyRecord(@Param("userId")Integer userId);
    //获取课程的分类
    List<Map<String,Object>> selCourseClass();
    //添加课程 (或者保存为草稿状态)
    Integer addCourseInfo(SyCourse course);
    //获取个人创作的课程
    List<Map<String,Object>> selCreationCourse(@Param("userId")Integer userId);
    //修改课程信息
    Integer updCourseInfo(@Param("map") Map<String,Object> map);
    //获取认证信息
    Map<String,Object> selReviewInfo(@Param("userId")Integer userId);
    //添加审核创作者
    Integer addCreateUser(@Param("map")Map<String,Object> map);
    //获取系统最新通知信息
    Map<String,Object> selNoteNewInfo(@Param("userId")Integer userId);
    //获取所有的系统通知
    List<Map<String,Object>> selAllNotesInfo(@Param("userId")Integer userId);
    //获取未读消息数量
    Map<String,Object> selNoteNum(@Param("userId")Integer userId);
    //批量更新消息状态信息
    Integer updNoteStatus(@Param("id")Integer id);
    //获取前台用户的地址信息
    Map<String,Object> getUserAddressIsDefault(Integer userId);
    //修改用户的手机号
    Integer setUserPhone(@Param("userId") Integer userId,@Param("phone") String phone,@Param("date") String date,@Param("lastDate") String lastDate);
    //修改用户的密码
    Integer setUserPassword(@Param("userId") Integer userId,@Param("password") String password);
    //添加用户的身份证和真实姓名
    Integer setUserReal(@Param("userId")Integer userId,@Param("realName")String realName,@Param("idCard")String idCard);
    //查看用户的所有收货地址
    List<Map<String,Object>> getUserAddress(Integer userId);
    //通过id查看收货地址
    Map<String,Object> getUserAddres(Integer addressId);
    //修改用户当前地址为默认状态
    Integer setDefaultAddress(@Param("userId") Integer userId,@Param("addressId") Integer addressId,@Param("isDefault") String isDefault);
    //删除用户的其他地址的默认状态
    Integer removeDefaultAddress(@Param("userId") Integer userId,@Param("addressId") Integer addressId,@Param("isDefault") String isDefault);
    //省市区的获取
    List<Map<String,Object>> getRegion(Integer id);
    //添加用户地址
    Integer addUserAddress(SyUserAddress userAddress);
    //通过id删除用户地址
    Integer removeUserAddress(Integer addressId);
    //修改用户地址
    Integer setUserAddress(SyUserAddress userAddress);
    //添加用户意见反馈
    Integer addUserFeedback(SyUserFeedback userFeedback);
    //获取个人微圈列表
    List<Map<String, Object>> selMicroCircleOwnData(@Param("userId") Integer userId);
    //通过id查看用户数据
    SyBeforeUser getUserInfo(Integer userId);
    //获取用户学习时长以及消费记录
    Map<String,Object> selStudyMoney(@Param("userId") Integer userId);
    //修改初次注册用户手机号
    Integer setRegisterUserPhone(@Param("userId") Integer userId,@Param("phone") String phone,@Param("date")String date);
    //获取当前订单是否使用了优惠券
    Map<String,Object> selOrderCouponNum(@Param("orderId") Integer orderId,@Param("userId") Integer userId);
    //获取优惠券的详细信息
    Map<String, Object> selCouponInfo(@Param("orderId") Integer orderId,@Param("userId") Integer userId);
    //判断手机是否已被注册
    Integer getPhoneExist(String phone);
    //添加用户的身份证和真实姓名
    Integer setUserRealByImg(@Param("userId")Integer userId,@Param("realName")String realName,@Param("idCard")String idCard,@Param("frontImg") String frontImg,@Param("backImg") String backImg);
    //判断身份证号是否已被注册
    Integer getIdCardExist(String idCard);
    //更新最新的APP版本
    Map<String,Object> selAppVersion();
    //查询视频的课程和封面
    Map<String, Object> selCourseVideo(@Param("courseId") Integer courseId);
    //删除草稿课程
    Integer delCourseNutton(Integer courseId);
    //查询商品的详情信息
    Map<String,Object> selProductInfoes(@Param("productId") Integer productId);
    //获取商品下的图片
    List<Map<String,Object>> selProcudtMirrorImg(@Param("productId") Integer productId);
    //查询指定分类下的商品
    List<Map<String,Object>> selClassProductInfoes(@Param("categoryId") Integer categoryId);
    //获取评论的数量
    Map<String,Integer> selCommentProductNum(@Param("productId") Integer productId);
    //获取商品下的评论
    List<Map<String,Object>> selproductComments(@Param("productId")Integer productId);
    //获取评论的是否点赞
    List<Map<String,Object>> selCommentLikeIf(@Param("productId") Integer productId,@Param("userId") Integer userId);
    //获取移动端人员信息
    SyBeforeUser selBeforeUserName(@Param("userId") Integer userId);
    //获取管理人员信息
    SyUser selBackUserName(@Param("userId") Integer userId);
    //点赞评论
    Integer addProductCommentLike(@Param("commentId") Integer commentId,@Param("userId") Integer userId,@Param("productId") Integer productId);
    //取消评论
    Integer delProductCommentLike(@Param("commentId") Integer commentId,@Param("userId") Integer userId,@Param("productId") Integer productId);
    //同步评论点赞总数
    Integer updProductCommentCountNum(@Param("productId") Integer productId,@Param("commentId") Integer commentId);
    //添加留言
    Integer addProductCommentInfo(@Param("userId") Integer userId, @Param("productId") Integer productId, @Param("content") String content);
    //删除个人评论 更改状态为删除
    Integer updProductCommentStatusDel(@Param("commentId") Integer commentId,@Param("userId") Integer userId,@Param("productId") Integer productId);
    //删除被删除的评论的点赞量
    Integer delProductCommentLikeStatus(@Param("commentId") Integer commentId,@Param("productId") Integer productId);
    //判断商品是否收藏
    Integer selProductColCourseIF(@Param("userId") Integer userId,@Param("productId") Integer productId);
    //收藏商品
    Integer addProductColCourseInfo(@Param("userId") Integer userId,@Param("productId") Integer productId);
    //取消收藏
    Integer delProductColCourseInfo(@Param("userId") Integer userId,@Param("productId") Integer productId);
    //同步收藏数据
    Integer updProductColNum(@Param("productId") Integer productId);
    //获取购物车的商品数量
    Map<String,Object> selShoppingCart(@Param("userId") Integer userId);
    //获取购物车的详细信息
    List<Map<String,Object>> selShopChartInfo(@Param("userId") Integer userId);
    //更新购物车的商品数量
    Integer updShopChartNum(@Param("shoppingCartId")Integer shoppingCartId,@Param("productNum")Integer productNum);
    //批量删除购物车
    Integer deleteShoppingCart(@Param("list")List<Integer> list);
    //添加购物车
    Integer addShoppingCart(@Param("userId") Integer userId,@Param("productId") Integer productId);
    //判断当前用户是否添加指定商品到购物车
    Integer selShopProduct(@Param("userId") Integer userId,@Param("productId") Integer productId);
    //获取微商城数据
    List<Map<String, Object>> selMicroMall();
    //获取购物车下对应的商品
    Integer selshopProductId(@Param("shoppingCartId") Integer shoppingCartId);
    //获取商品订单所需要的信息
    Map<String,Object> selOrderProInfo(@Param("productId") Integer productId,@Param("shoppingCartId")Integer shoppingCartId);
    //使用购物车车后订单的数据查看方式
    List<Map<String,Object>> selShopOrderShpows(@Param("orderId")Integer orderId);
}
